home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / WORLDSRC.ZIP / VCNVRT.C < prev    next >
C/C++ Source or Header  |  1992-08-13  |  11KB  |  416 lines

  1. #include <stdio.h>
  2.  
  3. /* World C Version 1.00 copyright 1987 J.D.McDonald 
  4.    Use as you like for non-commercial purposes, but please
  5.    leave this note, and document any changes you make as yours */
  6.  
  7. int             three[3], vrbpdo[100], vrbpio[100], vrbobj[100];
  8. int             pp1[15], pp2[15], pp3[8];
  9. int             obloc[200], obw3[200];
  10. int             obw4[200], obpprp[200], obimpr[200];
  11. int             dispat[300];
  12. char            chrbuf[81];
  13. char            astr[2], bstr[2], cstr[5], dstr[7];
  14. char            outstr[81], estr[8], fstr[7];
  15. char            obnoun[1200], obadjv[1400];
  16. char           *nounptr, *adjptr;
  17.  
  18. int             pnum, number, i, q, numx, vocdim, nvrbob, vocsz, m, q1;
  19. int             loxx, loxxx, ppq1, ppq2, zz1, zz2, ttabsz, locat, qq1, qq2;
  20. int             objmax, movmax, z, wt, size, value, floc, pprp, imprp;
  21. int             iloc, cval, qqqq, ib;
  22.  
  23. FILE           *vocab_dat, *vocab_inc, *parame_inc, *verbtb_inc;
  24. FILE           *data_dat, *trvtbl_inc, *locdat_inc, *objdat_inc;
  25.  
  26.  
  27. main()
  28. {
  29.  
  30.     astr[1] = 0;
  31.     bstr[1] = 0;
  32.     cstr[2] = 0;
  33.     dstr[6] = 0;
  34.     estr[7] = 0;
  35.     fstr[6] = 0;
  36.     obloc[0] = 0;
  37.     obnoun[0] = 0;
  38.     obadjv[0] = 0;
  39.     obw3[0] = 0;
  40.     obw4[0] = 0;
  41.     obpprp[0] = 0;
  42.     obimpr[0] = 0;
  43.     dispat[0] = 0;
  44.     vocab_dat = fopen("vocab.dat", "r");
  45.     vocab_inc = fopen("vocab.inc", "w");
  46.     parame_inc = fopen("parame.inc", "w");
  47.     verbtb_inc = fopen("verbtb.inc", "w");
  48.     fprintf(parame_inc, "#define ACTMAX     1\n");
  49.     number = 0;
  50.     pnum = 0;
  51. lab110:
  52.     for (i = 0; i < 81; i++)
  53.     chrbuf[i] = ' ';
  54.     if (fgets(chrbuf, 80, vocab_dat) == NULL)
  55.     goto lab500;
  56.     q = strlen(chrbuf) - 1;
  57.     for (i = q; i < 80; i++)
  58.     chrbuf[i] = ' ';
  59.     if (chrbuf[0] == '*')
  60.     goto lab110;
  61.     if (chrbuf[0] < '0' || chrbuf[0] >= '9')
  62.     goto lab111;
  63.     numx = pnum + 1;
  64.     if (chrbuf[0] == '1') {
  65.     fprintf(parame_inc, "#define BUZMAX %5d\n", pnum);
  66.     fprintf(parame_inc, "#define ADVMIN %5d\n", numx);
  67.     } else if (chrbuf[0] == '2') {
  68.     fprintf(parame_inc, "#define ADVMAX %5d\n", pnum);
  69.     fprintf(parame_inc, "#define VRBMIN %5d\n", numx);
  70.     } else if (chrbuf[0] == '3') {
  71.     fprintf(parame_inc, "#define VRBMAX %5d\n", pnum);
  72.     fprintf(parame_inc, "#define ADJMIN %5d\n", numx);
  73.     } else if (chrbuf[0] == '4') {
  74.     fprintf(parame_inc, "#define ADJMAX %5d\n", pnum);
  75.     fprintf(parame_inc, "#define NUNMIN %5d\n", numx);
  76.     } else if (chrbuf[0] == '5') {
  77.     fprintf(parame_inc, "#define NUNMAX %5d\n", pnum);
  78.     fprintf(parame_inc, "#define PRPMIN %5d\n", numx);
  79.     } else if (chrbuf[0] == '6') {
  80.     fprintf(parame_inc, "#define PRPMAX %5d\n", pnum);
  81.     } else;
  82.  
  83.     if (chrbuf[0] != '6')
  84.     goto lab110;
  85.     goto lab500;
  86. lab111:
  87.     number += 1;
  88.     if (chrbuf[0] == '+')
  89.     goto lab110;
  90.     pnum += 1;
  91.     for (i = 0; i < 6; i++)
  92.     outstr[i] = chrbuf[i];
  93.     if (chrbuf[59] >= 'A' && chrbuf[59] <= 'Z') {
  94.     for (i = 0; i < 6; i++)
  95.         outstr[i] = chrbuf[59 + i];
  96.     }
  97.     fprintf(parame_inc, "#define %6s %5d\n", outstr, pnum);
  98.     goto lab110;
  99. lab500:
  100.     fprintf(parame_inc, "#define VOCMAX %5d\n", number);
  101.     vocdim = number * 3;
  102.  
  103.     fseek(vocab_dat, 0l, 0);
  104.  
  105.     fprintf(vocab_inc, "    short vocab[%5d] = { 0 \n", vocdim + 1);
  106.     nvrbob = 0;
  107. lab600:
  108.     fgets(chrbuf, 80, vocab_dat);
  109.     q = strlen(chrbuf) - 1;
  110.     for (i = q; i < 80; i++)
  111.     chrbuf[i] = ' ';
  112.     if (chrbuf[0] == '*')
  113.     goto lab600;
  114.     vocsz = 0;
  115. lab820:
  116.     if (fgets(chrbuf, 80, vocab_dat) == NULL)
  117.     goto lab6000;
  118.     q = strlen(chrbuf) - 1;
  119.     for (i = q; i < 80; i++)
  120.     chrbuf[i] = ' ';
  121.     if (chrbuf[0] == '*')
  122.     goto lab820;
  123.     if (chrbuf[0] > '0' && chrbuf[0] < '9')
  124.     goto lab820;
  125.     m = 0;
  126.     if (chrbuf[0] == '+')
  127.     m = 1;
  128.     cvt(&chrbuf[m]);
  129.     if (m == 1)
  130.     three[0] = -three[0];
  131.     vocsz += 3;
  132.     q1 = (q < 9) ? q : 9;    /* q1 = min (q,9)  */
  133.     fprintf(vocab_inc, "  , %6d, %6d, %6d  /* %12.13s */\n", three[0],
  134.         three[1], three[2], chrbuf);
  135.     if (chrbuf[15] == ' ')
  136.     goto lab820;
  137.     for (i = 0; i < 15; i++) {
  138.     pp1[i] = chrbuf[i + 14] - '0';
  139.     pp2[i] = chrbuf[i + 31] - '0';
  140.     }
  141.     for (i = 0; i < 8; i++)
  142.     pp3[i] = chrbuf[i + 49] - '0';
  143.  
  144.     nvrbob += 1;
  145.     vrbpdo[nvrbob] = 0;
  146.     vrbpio[nvrbob] = 0;
  147.     vrbobj[nvrbob] = 0;
  148.     for (i = 0; i < 15; i++) {
  149.     vrbpdo[nvrbob] = vrbpdo[nvrbob] * 2 + pp1[i];
  150.     vrbpio[nvrbob] = vrbpio[nvrbob] * 2 + pp2[i];
  151.     }
  152.     for (i = 0; i < 8; i++)
  153.     vrbobj[nvrbob] = vrbobj[nvrbob] * 2 + pp3[i];
  154.     goto lab820;
  155. lab6000:
  156.     fprintf(verbtb_inc, "   short vrbpdo[ %3d ] = { 0 \n", nvrbob + 1);
  157.     for (i = 1; i <= nvrbob; i++)
  158.     fprintf(verbtb_inc,
  159.         "   , %7d \n", vrbpdo[i]);
  160.     fprintf(verbtb_inc, "   } ; \n");
  161.  
  162.     fprintf(verbtb_inc, "   short vrbpio[ %3d ] = { 0 \n", nvrbob + 1);
  163.     for (i = 1; i <= nvrbob; i++)
  164.     fprintf(verbtb_inc,
  165.         "   , %7d \n", vrbpio[i]);
  166.     fprintf(verbtb_inc, "   } ; \n");
  167.  
  168.     fprintf(verbtb_inc, "   short vrbobj[ %3d ] = { 0 \n", nvrbob + 1);
  169.     for (i = 1; i <= nvrbob; i++)
  170.     fprintf(verbtb_inc,
  171.         "   , %7d \n", vrbobj[i]);
  172.     fprintf(verbtb_inc, "   } ; \n");
  173.  
  174.  
  175.     fprintf(vocab_inc, "  } ;  \n");
  176.     fclose(vocab_dat);
  177.     fclose(vocab_inc);
  178.     fclose(verbtb_inc);
  179.  
  180.     data_dat = fopen("data.dat", "r");
  181.     trvtbl_inc = fopen("trvtbl.inc", "w");
  182.     locdat_inc = fopen("locdat.inc", "w");
  183.     objdat_inc = fopen("objdat.inc", "w");
  184.  
  185.     ttabsz = 0;
  186.     fprintf(trvtbl_inc, "  short trvtbl[] = { 0  \n");
  187. lab1000:
  188.     fgets(chrbuf, 80, data_dat);
  189.     if (chrbuf[0] == '*')
  190.     goto lab1000;
  191.     locat = atoi(&chrbuf[1]);
  192.     qq1 = atoi(&chrbuf[13]);
  193.     qq2 = atoi(&chrbuf[16]);
  194.     astr[0] = chrbuf[0];
  195.     cstr[0] = chrbuf[8];
  196.     cstr[1] = chrbuf[9];
  197.     bstr[0] = chrbuf[11];
  198.     if (locat == 9999)
  199.     goto lab1200;
  200.     ttabsz += 1;
  201.     if (strcmp(cstr, "N ") == 0)
  202.     ppq1 = 1;
  203.     else if (strcmp(cstr, "NE") == 0)
  204.     ppq1 = 2;
  205.     else if (strcmp(cstr, "E ") == 0)
  206.     ppq1 = 3;
  207.     else if (strcmp(cstr, "SE") == 0)
  208.     ppq1 = 4;
  209.     else if (strcmp(cstr, "S ") == 0)
  210.     ppq1 = 5;
  211.     else if (strcmp(cstr, "SW") == 0)
  212.     ppq1 = 6;
  213.     else if (strcmp(cstr, "W ") == 0)
  214.     ppq1 = 7;
  215.     else if (strcmp(cstr, "NW") == 0)
  216.     ppq1 = 8;
  217.     else if (strcmp(cstr, "U ") == 0)
  218.     ppq1 = 9;
  219.     else if (strcmp(cstr, "D ") == 0)
  220.     ppq1 = 10;
  221.     else
  222.     printf(" error in travel table\n");
  223.     if (bstr[0] == 'C')
  224.     ppq1 += 16;
  225.     if (bstr[0] == 'S')
  226.     ppq1 += 32;
  227.     if (bstr[0] == 'Q')
  228.     ppq1 += 64;
  229.     ppq2 = 512 * qq1 + qq2;
  230.     zz2 = ttabsz * 2;
  231.     zz1 = zz2 - 1;
  232.     {
  233.     if (locat != 0) {
  234.         dispat[locat] = zz1;
  235.         loxx = locat;
  236.     }
  237.     }
  238.  
  239.     fprintf(trvtbl_inc, "  , %7d , %7d \n", ppq1, ppq2);
  240.  
  241.     goto lab1000;
  242. lab1200:
  243.     loxxx = loxx + 1;
  244.     fprintf(trvtbl_inc, " } ;\n");
  245.     fprintf(trvtbl_inc, " short dispat[] = { 0 \n");
  246.     for (i = 1; i < loxxx; i++)
  247.     fprintf(trvtbl_inc, "   , %5d \n", dispat[i]);
  248.     fprintf(trvtbl_inc, "   , %5d }; \n", zz2 + 1);
  249.     fprintf(parame_inc, "#define LOCNUM %5d \n", loxx);
  250.     fprintf(parame_inc, "#define TTABSZ %5d \n", zz2);
  251.  
  252.     fclose(trvtbl_inc);
  253.  
  254.     fprintf(locdat_inc, "   short locdat[] = { 0 \n");
  255.  
  256.     while (1) {
  257.     do
  258.         fgets(chrbuf, 80, data_dat);
  259.     while (chrbuf[0] == '*');
  260.     locat = atoi(&chrbuf[1]);
  261.     if (locat == 9999)
  262.         break;
  263.     ppq1 = atoi(&chrbuf[6]);
  264.     fprintf(locdat_inc, "   , %6d \n", ppq1);
  265.     }
  266.     fprintf(locdat_inc, "  } ; \n");
  267.     fclose(locdat_inc);
  268.  
  269.     objmax = 0;
  270.     movmax = 0;
  271.     nounptr = obnoun;
  272.     adjptr = obadjv;
  273.  
  274.     while (1) {
  275.     do
  276.         fgets(chrbuf, 80, data_dat);
  277.     while (chrbuf[0] == '*');
  278.     z = atoi(&chrbuf[1]);
  279.     if (z == 9999)
  280.         break;
  281.     for (i = 0; i < 6; i++)
  282.         *nounptr++ = chrbuf[i + 7];
  283.     for (i = 0; i < 7; i++)
  284.         *adjptr++ = chrbuf[i + 16];
  285.     wt = atoi(&chrbuf[24]);
  286.     size = atoi(&chrbuf[30]);
  287.     value = atoi(&chrbuf[36]);
  288.     floc = atoi(&chrbuf[42]);
  289.     pprp = atoi(&chrbuf[48]);
  290.     imprp = atoi(&chrbuf[54]);
  291.     iloc = atoi(&chrbuf[60]);
  292.     cval = atoi(&chrbuf[66]);
  293.     for (i = 0; i < 6; i++)
  294.         fstr[i] = chrbuf[i + 72];
  295.     objmax += 1;
  296.     movmax += 1;
  297.     obw3[z] = wt * 256 + size;
  298.     obw4[z] = value * 4096 + floc;
  299.     obpprp[z] = pprp + 2048 * cval;
  300.     obloc[z] = iloc;
  301.     obimpr[z] = imprp;
  302.     for (i = 0; i < 6; i++)
  303.         if (fstr[i] == '\n')
  304.         fstr[i] = ' ';
  305.     fprintf(parame_inc, "#define  %7.6s %5d\n", fstr, z);
  306.     }
  307.  
  308.     while (1) {
  309.     do
  310.         fgets(chrbuf, 80, data_dat);
  311.     while (chrbuf[0] == '*');
  312.     z = atoi(&chrbuf[1]);
  313.     if (z == 9999)
  314.         break;
  315.     for (i = 0; i < 6; i++)
  316.         *nounptr++ = chrbuf[i + 7];
  317.     for (i = 0; i < 7; i++)
  318.         *adjptr++ = chrbuf[i + 16];
  319.     objmax += 1;
  320.     obw3[objmax] = atoi(&chrbuf[30]);
  321.     obw4[objmax] = atoi(&chrbuf[42]);
  322.     pprp = atoi(&chrbuf[48]);
  323.     obimpr[objmax] = atoi(&chrbuf[54]);
  324.     cval = atoi(&chrbuf[66]);
  325.     for (i = 0; i < 6; i++)
  326.         fstr[i] = chrbuf[i + 72];
  327.     for (i = 0; i < 6; i++)
  328.         if (fstr[i] == '\n')
  329.         fstr[i] = ' ';
  330.     obpprp[objmax] = pprp + 2048 * cval;
  331.  
  332.     fprintf(parame_inc, "#define  %7.6s %5d\n", fstr, objmax);
  333.     }
  334.     fclose(data_dat);
  335.  
  336.     fprintf(parame_inc, "#define OBJMAX %5d\n", objmax);
  337.     fprintf(parame_inc, "#define MOVMAX %5d\n", movmax);
  338.     fprintf(parame_inc, "#define OBJMX2 %5d\n", objmax + 1);
  339.     fclose(parame_inc);
  340.  
  341.     fprintf(objdat_inc, "   short obloc[] = { 0 \n");
  342.     for (i = 1; i <= movmax; i++) {
  343.     qqqq = obloc[i];
  344.     if (qqqq > 6000)
  345.         qqqq += movmax - 4000;
  346.     fprintf(objdat_inc, "  , %7d \n", qqqq);
  347.     }
  348.     fprintf(objdat_inc, " } ;\n");
  349.  
  350.     fprintf(objdat_inc, "   short obw3[] = { 0 \n");
  351.     for (i = 1; i <= objmax; i++) {
  352.     fprintf(objdat_inc, "  , %7d \n", obw3[i]);
  353.     }
  354.     fprintf(objdat_inc, " } ;\n");
  355.  
  356.     fprintf(objdat_inc, "   short obw4[] = { 0 \n");
  357.     for (i = 1; i <= objmax; i++) {
  358.     fprintf(objdat_inc, "  , %7d \n", obw4[i]);
  359.     }
  360.     fprintf(objdat_inc, " } ;\n");
  361.  
  362.     fprintf(objdat_inc, "   short obpprp[] = { 0 \n");
  363.     for (i = 1; i <= objmax; i++) {
  364.     fprintf(objdat_inc, "  , %7d \n", obpprp[i]);
  365.     }
  366.     fprintf(objdat_inc, " } ;\n");
  367.  
  368.     fprintf(objdat_inc, "   short obimpr[] = { 0 \n");
  369.     for (i = 1; i <= objmax; i++) {
  370.     fprintf(objdat_inc, "  , %7d \n", obimpr[i]);
  371.     }
  372.     fprintf(objdat_inc, " } ;\n");
  373.  
  374.     nounptr = obnoun;
  375.     fprintf(objdat_inc, "   short obnoun[] =  { 0 \n");
  376.     for (i = 1; i <= objmax; i++) {
  377.     for (ib = 0; ib < 6; ib++)
  378.         dstr[ib] = *nounptr++;
  379.     fprintf(objdat_inc, "  , %7s \n", dstr);
  380.     }
  381.     fprintf(objdat_inc, " } ;\n");
  382.  
  383.     adjptr = obadjv;
  384.     fprintf(objdat_inc, "   short obadjv[] = { 0 \n");
  385.     for (i = 1; i <= objmax; i++) {
  386.     for (ib = 0; ib < 7; ib++)
  387.         estr[ib] = *adjptr++;
  388.     fprintf(objdat_inc, "  , %8s \n", estr);
  389.     }
  390.     fprintf(objdat_inc, " } ;\n");
  391.  
  392.  
  393.     fclose(objdat_inc);
  394.     return(0);
  395. }
  396.  
  397.  
  398. cvt(strptr)
  399.     char           *strptr;
  400. {
  401.     int             ii, ij, k;
  402.  
  403.     for (ii = 0; ii < 3; ii++) {
  404.     three[ii] = 0;
  405.     for (ij = 0; ij < 3; ij++) {
  406.         k = *strptr++;
  407.         if (k == 45)
  408.         k = 91;
  409.         k -= 64;
  410.         if (k < 1 || k > 27)
  411.         k = 0;
  412.         three[ii] = three[ii] * 32 + k;
  413.     }
  414.     }
  415. }
  416.